#include "model.h"




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



void Model::create_VerticesOfInterest( int voiTYPE )
{


        QFile myFile( fileString_VOI );

        myFile.open(QIODevice::ReadOnly);

        if( !myFile.isOpen() )
        {
            ErrorManager::error(3, fileString_VOI);
            return;
        }

        QTextStream myStream(&myFile);

        /////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////
        int fingerNUMB = skeleton.bones[0].childrenVector.size();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                                                            VerticesOfInterest_Viz_Indices.clear();
                                                                            VerticesOfInterest_Viz_Indices.resize( fingerNUMB );
        for (int fff=0; fff<VerticesOfInterest_Viz_Indices.size(); fff++)   VerticesOfInterest_Viz_Indices[fff].clear();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                                                            VerticesOfInterest_Centroid.clear();
                                                                            VerticesOfInterest_Centroid.resize( fingerNUMB );
        for (int fff=0; fff<VerticesOfInterest_Centroid.size(); fff++)      VerticesOfInterest_Centroid[fff] << 0,0,0;
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        for (int iii=0; iii<voiTYPE; iii++)
        {
            for (int jjj=0; jjj<5; jjj++)
            {
                int         dummyInt;
                myStream >> dummyInt;
            }
        }
        ///////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////
        int         inputInt;   ///////////////////////////////////////////////////
        myStream >> inputInt;   VerticesOfInterest_Viz_Indices[0].append(inputInt);
        myStream >> inputInt;   VerticesOfInterest_Viz_Indices[1].append(inputInt);
        myStream >> inputInt;   VerticesOfInterest_Viz_Indices[2].append(inputInt);
        myStream >> inputInt;   VerticesOfInterest_Viz_Indices[3].append(inputInt);
        myStream >> inputInt;   VerticesOfInterest_Viz_Indices[4].append(inputInt);
        ///////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////

        ///////////////
        ///////////////
        myFile.close();
        ///////////////
        ///////////////

        ///////////////////////////////////////
        compute_VerticesOfInterest_Centroids(); // NULL POSE coord @ this point !!!
        ///////////////////////////////////////

}



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



void Model::compute_VerticesOfInterest_Centroids()
{

        for (int fingID=0; fingID<VerticesOfInterest_Viz_Indices.size(); fingID++)
        {
                /////////////////////////////////////////////
                VerticesOfInterest_Centroid[fingID] << 0,0,0;
                /////////////////////////////////////////////

                int voiNUMB = VerticesOfInterest_Viz_Indices[fingID].size(); // includes by default the SourceVOI ;)

                for (int vrtID=0; vrtID<voiNUMB; vrtID++)
                {
                    VerticesOfInterest_Centroid[fingID] += mesh.verticesWeighted[ VerticesOfInterest_Viz_Indices[fingID][vrtID] ];
                }

                ///////////////////////////////////////////////
                VerticesOfInterest_Centroid[fingID] /= voiNUMB;
                ///////////////////////////////////////////////

        }

}



